package com.crm.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonSetter;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class Contract extends BaseEntity{
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 合同编号
     */
    private String contractNo;

    /**
     * 客户手机号
     */
    private String phone;

    /**
     * 客户姓名
     */
    private String name;

    /**
     * 学科类别: 1-语文, 2-数学等
     */

    private Integer subject;

    /**
     * 来源渠道: 0-线上, 1-线下, 2-合作等
     */
    private Integer channel;

    /**
     * 活动ID
     */
    private Long activityId;

    /**
     * 课程ID
     */
    private Long courseId;

    /**
     * 状态: 1-待支付, 2-已支付, 3-已取消, 4-已完成等
     */
    private Integer status;

    /**
     * 合同文件路径
     */
    private String fileName;

    /**
     * 课程原价
     */
    private BigDecimal coursePrice;

    /**
     * 折扣类型
     */
    private String discountType;

    /**
     * 实付金额（order是MySQL保留字，需要用@TableField注解）
     */
    @TableField("`order`")  // 使用反引号转义保留字
    private BigDecimal order;

    /**
     * 完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date finishTime;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新人
     */
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 关联业务ID（如商机ID）
     */
    private Long businessId;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 用于 JSON 序列化时将 subject 转换为字符串
     * @return 学科类别字符串
     */
    @JsonGetter("subject")
    public String getSubjectAsString() {
        return subject != null ? String.valueOf(subject) : null;
    }
  
   @JsonSetter("id")
    public String getId() {
        return id != null ? String.valueOf(id) : null;
    }

   
}
